﻿<?php
class Usuario extends AppModel {

	var $name = 'Usuario';
	var $displayField = 'email';
	
	var $validate = array(
		'nome_completo' => array(
			'rule' => 'notEmpty',
			'message' => 'Preencha o nome completo'
			),
		'email' => array(
			'email' => array(
				'rule' => 'email',
				'message' => 'Email inválido'
				),
			'unique' => array(
				'rule' => array('checkUnique', 'email'),
				'message' => 'O email já existe. Digite outro endereço de email'
				)),
		'senha_clear' => array(
			'length' => array(
				'rule' => array('minLength', '5'),
				'message' => 'Digite uma senha de no mínimo 5 caracteres'
				),
			'repeat_password' => array(
				'rule' => 'checkPassword',
				'message' => 'As senhas não conferem'
				)
			)		
		);
		
	//The Associations below have been created with all possible keys, those that are not needed can be removed
	var $hasMany = array(
		'Site' => array(
			'className' => 'Site',
			'foreignKey' => 'usuario_id',
			'dependent' => false,
			'conditions' => '',
			'fields' => '',
			'order' => '',
			'limit' => '',
			'offset' => '',
			'exclusive' => '',
			'finderQuery' => '',
			'counterQuery' => ''
		)
	);
	
	function checkPassword($data) {

		/* Testa se foi definida a senha atual, ou seja, se a requisição vem do action EDIT */
		
		if(isset($this->data['Usuario']['senha_atual_hashed'])){
			
			/* Testa se a senha do BD é igual à senha informada pelo usuário */
			
			if($this->data['Usuario']['senha_anterior'] == $this->data['Usuario']['senha_atual_hashed']){
				
				/* Testa se a senha informada é igual à conferência da senha */
				
				if($this->data['Usuario']['senha'] == $this->data['Usuario']['senha2hashed'])
					return TRUE;
				else
					return FALSE;
			} else{
				return FALSE;
			}
		} else{
		
			/* Entra aqui se a requisição vem da action ADD */
		
			if($this->data['Usuario']['senha'] == $this->data['Usuario']['senha2hashed'])
				return TRUE;
			return FALSE;
		}
	}
	
	function checkUnique($data, $fieldName) {
		$valid = false;
		if(isset($fieldName) && $this->hasField($fieldName)){
			$valid = $this->isUnique(array($fieldName => $data));
		}
		return $valid;
	}
}
?>